{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ch 8.5 Bagging\n",
    "试编程实现Bagging，以决策树桩为基学习器，在西瓜数据集3.0a加上训练一个Bagging集成并与图8.6进行比较。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from sklearn.ensemble import BaggingClassifier\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn import tree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "dataset = pd.read_csv('data/table_4_3_watermelon_3_0_num.csv')\n",
    "dataset = dataset[['density','sugar_ratio','label']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def train_bagging(dataset, num_base):\n",
    "    base_learner = DecisionTreeClassifier()\n",
    "    bagging = BaggingClassifier(base_learner, n_estimators=num_base)\n",
    "    bagging.fit(dataset.ix[:,[0,1]], dataset.ix[:,2])\n",
    "    return bagging"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "def print_error_weight(bagging):\n",
    "    print('Base Learner error and weight:')\n",
    "    for idx, err, weight in zip(range(1, 11), bagging.estimator_errors_, bagging.estimator_weights_):\n",
    "        print('Base Learner-%d\\t' % idx, err, '\\t', weight)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "def plot_boundary(dataset, bagging, plot_num, num_base):\n",
    "    fig = plt.subplot(plot_num)\n",
    "    test_density = np.array(dataset['density'])\n",
    "    test_sugar_ratio = np.array(dataset['sugar_ratio'])\n",
    "    x_step = (max(test_density) - min(test_density))/20\n",
    "    y_step = (max(test_sugar_ratio) - min(test_sugar_ratio))/20\n",
    "    test_x = np.arange(min(test_density)-5*x_step, max(test_density)+5*x_step, x_step)\n",
    "    test_y = np.arange(min(test_sugar_ratio)-5*y_step, max(test_sugar_ratio)+5*y_step, y_step)\n",
    "    test_data = np.transpose([np.tile(test_x, len(test_y)), np.repeat(test_y, len(test_x))])\n",
    "    test_out = bagging.predict(test_data)\n",
    "    for i in range(len(test_out)):\n",
    "        if test_out[i]:\n",
    "            plt.plot(test_data[i,0], test_data[i,1], 'bx', alpha=0.5)\n",
    "        else:\n",
    "            plt.plot(test_data[i,0], test_data[i,1], 'gx', alpha=0.5)\n",
    "    dataset0 = dataset[dataset['label']==0]\n",
    "    dataset1 = dataset[dataset['label']==1]\n",
    "    plt.plot(list(dataset0['density']), list(dataset0['sugar_ratio']), 'g.')\n",
    "    plt.plot(list(dataset1['density']), list(dataset1['sugar_ratio']), 'b.')\n",
    "    plt.title('num_classifier='+str(num_base))\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nefw/CMJO5uJjdLEAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb536748>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb7315f8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb731f60>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\ntIcbBC7SHv8PJo94t1SJxsoAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xc0cfb70>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for i,j in zip([1,3,5,11],[221,222,223,224]):\n",
    "    bag = train_bagging(dataset, num_base=i)\n",
    "    plot_boundary(dataset, bag, j, i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [conda root]",
   "language": "python",
   "name": "conda-root-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  },
  "toc": {
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": "block",
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
